﻿using System;
using System.Net.Http;
using System.Web.Http;
using Sustainalytics.Entities;
using Sustainalytics.Portfolios.Service.Models;
using Sustainalytics.Utils;

namespace Sustainalytics.Portfolios.Service.Controllers
{
    public interface IPortfoliosController
    {
        HttpResponseMessage Get([FromUri] ListOptions listOptions, Guid AccountId, Guid UserId, string NamePortfolio, PortfolioSharingStatus? sharingStatus, bool? IsMyPortfolio = false, bool IsNameEqual = false, bool screeningTool = false);

        HttpResponseMessage Get(Guid id, [FromUri] ListOptions listOptions, Guid accountId, Guid userId, string namePortfolio, PortfolioSharingStatus? sharingStatus, bool? isMyPortfolio, bool isNameEqual = false, bool screeningTool = false);

        HttpResponseMessage Put([FromBody] PortfolioAddDto portfolioUpdateDto);

        HttpResponseMessage Post([FromBody] PortfolioAddDto portfolioAddDto);

        HttpResponseMessage Delete(Guid portfolioId);

        HttpResponseMessage Patch([FromBody] PortfolioSharingDto portfolioShared);

        /// <summary>
        /// Rename portfolio name
        /// </summary>
        /// <param name="id"></param>
        /// <param name="newName"></param>
        /// <returns></returns>
        HttpResponseMessage Patch([FromUri] Guid id, string newName);
    }
}
